<?php

class ShowMenu extends CWidget {

    public $data;
    public $parentId;
    public $rootDir;
    public $idActive = 0;
    private $_menu;

    public function run() {
        if (isset($this->data[$this->parentId])) {
            $this->menuRecursion($this->parentId, $this->data);

            echo $this->_menu;
        }
    }

    /**
     * DÙNG ĐỆ QUI - RECURSION
     *  - Lưu ý biến $menu sau cùng phải được bao bọc bởi cặp <ul>, nghĩa là
     *    <ul>$menu</ul>
     */
    private function menuRecursion($parent_id, $menu_array) {
        $parent_array = $menu_array[$parent_id];

        foreach ($parent_array as $id => $row) {
            if ($id == $this->idActive)
                $htmlOptions = array('class'=>'link menuActive');
            else
                $htmlOptions = array('class'=>'link');
            
            $link = ($row['link'] == '#') ?
                CHtml::link($row['title'], 'javascript:void(0)', $htmlOptions)
                :
                CHtml::link($row['title'], $this->rootDir . $row['link'], $htmlOptions);   
            
            if (array_key_exists($id, $menu_array)) {
                $this->_menu .= '<li>' . $link . '<ul class="haveSub">';
                $this->menuRecursion($id, $menu_array);
                $this->_menu .= '</ul></li>';
            }
            else {
                $this->_menu .= '<li>' . $link . '</li>';
            }
                
        }
    }

}